<?php

namespace Authentication\Model;

//use Zend\Db\TableGateway\TableGateway;

require_once('nusoap/nusoap.php');
use nusoap_client as SoapClient;

class RoleService
{

/*   protected $tableGateway;

   public function __construct(TableGateway $tableGateway) {
      $this->tableGateway = $tableGateway;
   }*/

   private $client;

   public function __construct() {
      $this->client = new SoapClient('http://soap.asistencia.uca.edu.py/authentication_soap.php');
   }

/*   public function getPermisosByUsuario($user_id) {
      $select  = new \Zend\Db\Sql\Select;
//SELECT P.id, P.modulo, P.accion FROM permisos P INNER JOIN perfil_permiso on P.id = perfil_permiso.id_permiso INNER JOIN perfiles ON perfiles.id = perfil_permiso.id_perfil INNER JOIN usuario_perfil ON usuario_perfil.id_perfil = perfiles.id INNER JOIN usuarios ON usuarios.id = usuario_perfil.id_usuario WHERE usuarios.id = '25' ORDER BY P.id ASC

      $select->from('permisos');
      $select->columns(array('id','modulo','accion'));
      $select->join('perfil_permiso',"permisos.id = perfil_permiso.id_permiso",array(),'inner');
      $select->join('perfiles',"perfiles.id = perfil_permiso.id_perfil",array(),'inner');
      $select->join('usuario_perfil',"usuario_perfil.id_perfil = perfiles.id",array(),'inner');
      $select->join('usuarios',"usuarios.id = usuario_perfil.id_usuario",array(),'inner');
      $select->where(array('usuarios.id' => $user_id));
      $select->order('permisos.id');
      //echo $select->getSqlString();

      $rowset = $this->tableGateway->selectWith($select);

      return $rowset;
   }*/

   //SOAP Client Version
   public function getPermisosByUsuario($user_id) {

      $result = $this->client->call('getPermisosByUsuario',array('user_id' => $user_id));
      //var_dump($result);

      //convertimos la respuesta de array a objetos
      $rowset = json_decode(json_encode($result), FALSE);

      return $rowset;
   }

   public function hasPermission($user_id, $module, $action) {

      $allowed = false;
      $rowset = $this->getPermisosByUsuario($user_id);

      foreach($rowset as $row) {
         //echo " " . $row->modulo . "/" . $row->accion;
         if ($row->accion == "") $row->accion = "index";
         if ($row->modulo == $module && $row->accion == $action) {
            $allowed = true;
            break;
         }
      }

      return $allowed;

   }

}
